Introduction

In the philosophy history, schools have been founded and developed, made their statements, and understood phenomena and principles in different aspects. They were also influenced by each other during the long history of philosophy. (Hopefully this will raise your interest in philosophy!!)

By this data mining based on more than 300,000 sentences collected from the major schools of philosophy, you would directly and simply capture the brief ideas, characteristics and relationships among them.

Data Source: https://www.kaggle.com/datasets/kouroshalizadeh/history-of-philosophy

Which school is most “talkative”?

Some schools of philosophy are more likely to generate shorter and more concise statements to support their claims, while others prefer to indicate and explain their points of view using longer and complicated sentences, which could be observed from below.

(But actually, sometimes the simpler sentences in philosophy require and imply more costs and discussion in understanding them!)

According to the boxplot, Nietzsche and Plato have minimum two median sentence lengths, 87 and 95 words respectively. Empiricism and Capitalism with median sentence lengths 160 and 168, almost twice than the nietzsche, in contrast, could be more descriptive and explanatory with longer sentences.

Implications and Relationship between Schools of Philosophy

Suppose you are not quite familiar with any of these schools of thoughts in Philosophy. You can still figure out what the school is and what the main topic it focuses on by looking at these word clouds!

Take a Guess: Which school is it?

Yes! These words belong to the corpus of Feminism because words including “women”, “wife”, “girl”, and “mother” show high frequency in sentences. Also, the appearance of the words “men”, “black”, “marriage”, “children”, etc. indicates that the topics as race and family relation might be included in the discussion of Feminism.

Take a Guess: What about this?

Empiricism! Empiricism emphasizes the central role of empirical evidence in the formation of “ideas”. It holds that the “knowledge” is primarily gained from previous “experience” and “senses”’ with evidence (“evident”).

(Words quoted above are shown in the word cloud of empiricism.)

Moreover, as mentioned before, the schools of philosophy might be influenced by other schools. Based on the word clouds, some important associations can be observed and pointed out, which would be helpful to study not only the school itself but also from a comparative perspective.

For instance, Capitalism and Communism are both concerned about economic systems and concentrate on “labour”, “money”, and “commodities” according to the word clouds. But they are always in the opposite position in most discussions these days because they think very differently. The words “interest”, “market”, “trade”, “equal”, etc. support Capitalism’s main idea of individual profit earning, private ownership and free market. However, Communism advocates governmental control over resources and products, shown by the high frequency of “power” and “political” in word cloud. The interesting thing is “capitalist” does also occur very frequently, which might indicate that there are sentences to argue against or make comparison to Capitalism in discussion of Communism!

Another example could be the relation described by text data between schools of Aristotle and Plato. Aristotle was the student of Plato in the Academy. Although Aristotle’s philosophy is relatively more practical than Plato’s, they could be traced back to a similar source. They both believed that a “just” person with “virtue” and the “just” “actions” are good.

(Words quoted above are shown in the word cloud of Plato and Aristotle.)

Emotional Difference between Schools

By observing the interactive barplot by schools below, you will understand the attitudes of schools and how they emotionally express themselves. Almost all schools receive a high sentiment score in trust. Feminism shows more anticipation and less disgust in their sentences. Plato wins in joy, which corresponds to “virtue”, “good” and “love” in the word cloud. The anger and sadness in Communism could also possibly be a sign of historical revolution happening and class struggling related to it!

angeranticipationdisgustfearjoysadnesssurprisetrust00.050.10.150.20.25
analyticaristotlecapitalismcommunismcontinentalempiricismfeminismgerman_idealismnietzschephenomenologyplatorationalismstoicismemotionprob
Emotions Winner among Schools
emotion school prob
anger communism 0.1030000
anticipation feminism 0.1735429
disgust analytic 0.0686709
fear german_idealism 0.1306962
joy plato 0.1329193
sadness communism 0.1100000
surprise continental 0.0705354
trust continental 0.2747676

Discussion

In this Philosophy for Everyone, questions and features and understanding based on text data mining of corpus of major schools of philosophy were discussed including sentence lengths, word frequency, and sentiment analysis. Don’t forget to always check more about history of philosophy after read this insights-gainnig story!

LS0tDQp0aXRsZTogIlBoaWxvc29waHkgZm9yIEV2ZXJ5b25lOiBXaGF0IEhhcHBlbmVkIGJldHdlZW4gU2Nob29scyBvZiBQaGlsb3NvcGh5PyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiFbXShwcm9qZWN0MVxccDEucG5nKQ0KDQojIyBJbnRyb2R1Y3Rpb24gDQoNCkluIHRoZSBwaGlsb3NvcGh5IGhpc3RvcnksIHNjaG9vbHMgaGF2ZSBiZWVuIGZvdW5kZWQgYW5kIGRldmVsb3BlZCwgbWFkZSB0aGVpciBzdGF0ZW1lbnRzLCBhbmQgdW5kZXJzdG9vZCBwaGVub21lbmEgYW5kIHByaW5jaXBsZXMgaW4gZGlmZmVyZW50IGFzcGVjdHMuIFRoZXkgd2VyZSBhbHNvIGluZmx1ZW5jZWQgYnkgZWFjaCBvdGhlciBkdXJpbmcgdGhlIGxvbmcgaGlzdG9yeSBvZiBwaGlsb3NvcGh5LiAoSG9wZWZ1bGx5IHRoaXMgd2lsbCByYWlzZSB5b3VyIGludGVyZXN0IGluIHBoaWxvc29waHkhISkNCg0KQnkgdGhpcyBkYXRhIG1pbmluZyBiYXNlZCBvbiBtb3JlIHRoYW4gMzAwLDAwMCBzZW50ZW5jZXMgY29sbGVjdGVkIGZyb20gdGhlIG1ham9yIHNjaG9vbHMgb2YgcGhpbG9zb3BoeSwgeW91IHdvdWxkIGRpcmVjdGx5IGFuZCBzaW1wbHkgY2FwdHVyZSB0aGUgYnJpZWYgaWRlYXMsIGNoYXJhY3RlcmlzdGljcyBhbmQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGVtLiANCg0KRGF0YSBTb3VyY2U6IGh0dHBzOi8vd3d3LmthZ2dsZS5jb20vZGF0YXNldHMva291cm9zaGFsaXphZGVoL2hpc3Rvcnktb2YtcGhpbG9zb3BoeSANCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShiZWVzd2FybSkNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KDQpsaWJyYXJ5KHRtKQ0KbGlicmFyeShzeXV6aGV0KQ0KbGlicmFyeSh0ZXh0cmV1c2UpDQpsaWJyYXJ5KGdncHVicikNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkodmlzdGltZSkNCmxpYnJhcnkod29yZGNsb3VkKQ0KDQpgYGANCg0KDQpgYGB7cn0NCmRmIDwtIHJlYWRfY3N2KCJwaGlsb3NvcGh5X2RhdGFcXHBoaWxvc29waHlfZGF0YS5jc3YiKQ0KIyBoZWFkKGRmKQ0KDQojIHVuaXF1ZShkZiRzY2hvb2wpDQojIHVuaXF1ZShkZiRhdXRob3IpDQoNCiMgc3VtKGlzLm5hKGRmKSkNCg0KZGYueWVhciA8LSBkZiAlPiUgZ3JvdXBfYnkoc2Nob29sKSAlPiUgDQogIHN1bW1hcml6ZShlYXJsaWVzdF9wdWJsaWNhdGlvbl9kYXRlID0gbWluKG9yaWdpbmFsX3B1YmxpY2F0aW9uX2RhdGUpKSAlPiUNCiAgYXJyYW5nZShlYXJsaWVzdF9wdWJsaWNhdGlvbl9kYXRlKQ0KDQprYWJsZShkZi55ZWFyLCBjYXB0aW9uID0gIkZpcnN0IFB1YmxpY2F0aW9uIFllYXIgb2YgU2Nob29scyIpIA0KDQpgYGANCg0KIyMgV2hpY2ggc2Nob29sIGlzIG1vc3Qg4oCcdGFsa2F0aXZl4oCdPyANCg0KU29tZSBzY2hvb2xzIG9mIHBoaWxvc29waHkgYXJlIG1vcmUgbGlrZWx5IHRvIGdlbmVyYXRlIHNob3J0ZXIgYW5kIG1vcmUgY29uY2lzZSBzdGF0ZW1lbnRzIHRvIHN1cHBvcnQgdGhlaXIgY2xhaW1zLCB3aGlsZSBvdGhlcnMgcHJlZmVyIHRvIGluZGljYXRlIGFuZCBleHBsYWluIHRoZWlyIHBvaW50cyBvZiB2aWV3IHVzaW5nIGxvbmdlciBhbmQgY29tcGxpY2F0ZWQgc2VudGVuY2VzLCB3aGljaCBjb3VsZCBiZSBvYnNlcnZlZCBmcm9tIGJlbG93LiANCg0KKEJ1dCBhY3R1YWxseSwgc29tZXRpbWVzIHRoZSBzaW1wbGVyIHNlbnRlbmNlcyBpbiBwaGlsb3NvcGh5IHJlcXVpcmUgYW5kIGltcGx5IG1vcmUgY29zdHMgYW5kIGRpc2N1c3Npb24gaW4gdW5kZXJzdGFuZGluZyB0aGVtISkNCg0KQWNjb3JkaW5nIHRvIHRoZSBib3hwbG90LCBOaWV0enNjaGUgYW5kIFBsYXRvIGhhdmUgbWluaW11bSB0d28gbWVkaWFuIHNlbnRlbmNlIGxlbmd0aHMsIDg3IGFuZCA5NSB3b3JkcyByZXNwZWN0aXZlbHkuIEVtcGlyaWNpc20gYW5kIENhcGl0YWxpc20gIHdpdGggbWVkaWFuIHNlbnRlbmNlIGxlbmd0aHMgMTYwIGFuZCAxNjgsIGFsbW9zdCB0d2ljZSB0aGFuIHRoZSBuaWV0enNjaGUsIGluIGNvbnRyYXN0LCBjb3VsZCBiZSBtb3JlIGRlc2NyaXB0aXZlIGFuZCBleHBsYW5hdG9yeSB3aXRoIGxvbmdlciBzZW50ZW5jZXMuIA0KDQoNCmBgYHtyfQ0KZGYuZGF0ZSA8LSBkZiAlPiUgZ3JvdXBfYnkoc2Nob29sKSAlPiUNCiAgc3VtbWFyaXplKGZpcnN0X3B1Ymxpc2hlZF9kYXRlID0gbWluKG9yaWdpbmFsX3B1YmxpY2F0aW9uX2RhdGUpLCANCiAgICAgICAgICAgIG1lZF9sZW4gPSBtZWRpYW4oc2VudGVuY2VfbGVuZ3RoKSkgJT4lDQogIHVuZ3JvdXAoKQ0KDQpkZi5maXJzdC5kYXRlIDwtIGRmICU+JSBsZWZ0X2pvaW4oZGYuZGF0ZSkgJT4lIA0KICBtdXRhdGUoc2Nob29sID0gcmVvcmRlcihmYWN0b3Ioc2Nob29sKSwgbWVkX2xlbikpDQoNCmRmLm1lYW4gPC0gZGYuZmlyc3QuZGF0ZSAlPiUgc2VsZWN0KHNjaG9vbCwgbWVkX2xlbikNCiMgdW5pcXVlKGRmLm1lYW4pDQoNCmxlbl9ieV9zY2hvb2wgPSBnZ3Bsb3QoZGF0YT1kZi5maXJzdC5kYXRlLCANCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHg9cmVvcmRlcihzY2hvb2wsIG1lZF9sZW4pLCB5PXNlbnRlbmNlX2xlbmd0aCkpICsNCiAgZ2VvbV9ib3hwbG90KGFlcyhmaWxsPXNjaG9vbCkpICsgDQogIGxhYnModGl0bGU9IlNlbnRlbmNlIExlbmd0aCBmb3IgU2Nob29scyIpICsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA0KSkgDQoNCmxlbl9ieV9zY2hvb2wNCg0KYGBgDQoNCiMjIEltcGxpY2F0aW9ucyBhbmQgUmVsYXRpb25zaGlwIGJldHdlZW4gU2Nob29scyBvZiBQaGlsb3NvcGh5DQoNClN1cHBvc2UgeW91IGFyZSBub3QgcXVpdGUgZmFtaWxpYXIgd2l0aCBhbnkgb2YgdGhlc2Ugc2Nob29scyBvZiB0aG91Z2h0cyBpbiBQaGlsb3NvcGh5LiBZb3UgY2FuIHN0aWxsIGZpZ3VyZSBvdXQgd2hhdCB0aGUgc2Nob29sIGlzICBhbmQgd2hhdCB0aGUgbWFpbiB0b3BpYyBpdCBmb2N1c2VzIG9uIGJ5IGxvb2tpbmcgYXQgdGhlc2Ugd29yZCBjbG91ZHMhDQoNCiMjIyMgVGFrZSBhIEd1ZXNzOiBXaGljaCBzY2hvb2wgaXMgaXQ/DQoNCmBgYHtyfQ0KDQp3b3JkX2Nsb3VkIDwtIGZ1bmN0aW9uKHNjaG9vbF9uYW1lLCBkZil7DQogIA0KICBkZi5zY2hvb2wgPC0gZGYgJT4lIGZpbHRlcihzY2hvb2wgPT0gc2Nob29sX25hbWUpICU+JSBzZWxlY3Qoc2VudGVuY2VfbG93ZXJlZCkNCiAgIyBwcmludChsZW5ndGgoZGYuc2Nob29sJHNlbnRlbmNlX2xvd2VyZWQpKQ0KICAjIHByaW50KGhlYWQoZGYuc2Nob29sKSkNCiAgDQogIGRvY3MgPC0gQ29ycHVzKFZlY3RvclNvdXJjZShkZi5zY2hvb2wpKQ0KICAjIGRvY3MNCiAgDQogICMgaW5zcGVjdChkb2NzKQ0KICBkb2NzIDwtdG1fbWFwKGRvY3MsIHN0cmlwV2hpdGVzcGFjZSkNCiAgZG9jcyA8LSB0bV9tYXAoZG9jcywgcmVtb3ZlV29yZHMsIHN0b3B3b3JkcygiZW5nbGlzaCIpKQ0KICBkb2NzIDwtIHRtX21hcChkb2NzLCByZW1vdmVXb3JkcywgY2hhcmFjdGVyKDApKQ0KICBkb2NzIDwtIHRtX21hcChkb2NzLCByZW1vdmVQdW5jdHVhdGlvbikNCiAgDQogIHRkbS5hbGwgPC0gVGVybURvY3VtZW50TWF0cml4KGRvY3MpDQoNCiAgbSA8LSBhcy5tYXRyaXgodGRtLmFsbCkNCiAgdiA8LSBzb3J0KHJvd1N1bXMobSksZGVjcmVhc2luZz1UUlVFKQ0KICBkIDwtIGRhdGEuZnJhbWUod29yZCA9IG5hbWVzKHYpLGZyZXE9dikNCiAgIyBwcmludChoZWFkKGQpKQ0KDQogIHJldHVybihkKQ0KICANCiAgDQp9DQoNCg0KYGBgDQoNCmBgYHtyfQ0KZC5mZW0gPC0gd29yZF9jbG91ZCgiZmVtaW5pc20iLCBkZikNCg0KDQpwLmZlbSA8LSB3b3JkY2xvdWQoZC5mZW0kd29yZCwgZC5mZW0kZnJlcSwNCiAgICAgICAgICBzY2FsZT1jKDMsMC4zKSwNCiAgICAgICAgICBtYXgud29yZHM9MjAwLA0KICAgICAgICAgIG1pbi5mcmVxPTEsDQogICAgICAgICAgcmFuZG9tLm9yZGVyPUZBTFNFLA0KICAgICAgICAgIHJvdC5wZXI9MC4zLA0KICAgICAgICAgIHJhbmRvbS5jb2xvcj1GQUxTRSwNCiAgICAgICAgICBjb2xvcnM9YnJld2VyLnBhbCg5LCJCbHVlcyIpKQ0KYGBgDQoNClllcyEgVGhlc2Ugd29yZHMgYmVsb25nIHRvIHRoZSBjb3JwdXMgb2YgKipGZW1pbmlzbSoqIGJlY2F1c2Ugd29yZHMgaW5jbHVkaW5nIOKAnHdvbWVu4oCdLCDigJx3aWZl4oCdLCDigJxnaXJs4oCdLCBhbmQg4oCcbW90aGVy4oCdIHNob3cgaGlnaCBmcmVxdWVuY3kgaW4gc2VudGVuY2VzLiBBbHNvLCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgd29yZHMg4oCcbWVu4oCdLCDigJxibGFja+KAnSwg4oCcbWFycmlhZ2XigJ0sIOKAnGNoaWxkcmVu4oCdLCBldGMuIGluZGljYXRlcyB0aGF0IHRoZSB0b3BpY3MgYXMgcmFjZSBhbmQgZmFtaWx5IHJlbGF0aW9uIG1pZ2h0IGJlIGluY2x1ZGVkIGluIHRoZSBkaXNjdXNzaW9uIG9mIEZlbWluaXNtLiANCg0KIyMjIyBUYWtlIGEgR3Vlc3M6IFdoYXQgYWJvdXQgdGhpcz8NCg0KYGBge3J9DQoNCmQuZW1wIDwtIHdvcmRfY2xvdWQoImVtcGlyaWNpc20iLCBkZikNCg0KDQpwLmVtcCA8LSB3b3JkY2xvdWQoZC5lbXAkd29yZCwgZC5lbXAkZnJlcSwNCiAgICAgICAgICBzY2FsZT1jKDMsMC4zKSwNCiAgICAgICAgICBtYXgud29yZHM9MjAwLA0KICAgICAgICAgIG1pbi5mcmVxPTEsDQogICAgICAgICAgcmFuZG9tLm9yZGVyPUZBTFNFLA0KICAgICAgICAgIHJvdC5wZXI9MC4zLA0KICAgICAgICAgIHJhbmRvbS5jb2xvcj1GQUxTRSwNCiAgICAgICAgICBjb2xvcnM9YnJld2VyLnBhbCg5LCJCbHVlcyIpKQ0KDQpgYGANCg0KKipFbXBpcmljaXNtISoqIEVtcGlyaWNpc20gZW1waGFzaXplcyB0aGUgY2VudHJhbCByb2xlIG9mIGVtcGlyaWNhbCBldmlkZW5jZSBpbiB0aGUgZm9ybWF0aW9uIG9mIOKAnGlkZWFz4oCdLiBJdCBob2xkcyB0aGF0IHRoZSDigJxrbm93bGVkZ2XigJ0gaXMgcHJpbWFyaWx5IGdhaW5lZCBmcm9tIHByZXZpb3VzIOKAnGV4cGVyaWVuY2XigJ0gYW5kICDigJxzZW5zZXPigJ3igJkgd2l0aCBldmlkZW5jZSAo4oCcZXZpZGVudOKAnSkuIA0KDQooV29yZHMgcXVvdGVkIGFib3ZlIGFyZSBzaG93biBpbiB0aGUgd29yZCBjbG91ZCBvZiBlbXBpcmljaXNtLikNCg0KDQpNb3Jlb3ZlciwgYXMgbWVudGlvbmVkIGJlZm9yZSwgdGhlIHNjaG9vbHMgb2YgcGhpbG9zb3BoeSBtaWdodCBiZSBpbmZsdWVuY2VkIGJ5IG90aGVyIHNjaG9vbHMuIEJhc2VkIG9uIHRoZSB3b3JkIGNsb3Vkcywgc29tZSBpbXBvcnRhbnQgYXNzb2NpYXRpb25zIGNhbiBiZSBvYnNlcnZlZCBhbmQgcG9pbnRlZCBvdXQsIHdoaWNoIHdvdWxkIGJlIGhlbHBmdWwgdG8gc3R1ZHkgbm90IG9ubHkgdGhlIHNjaG9vbCBpdHNlbGYgYnV0IGFsc28gZnJvbSBhIGNvbXBhcmF0aXZlIHBlcnNwZWN0aXZlLiANCg0KRm9yIGluc3RhbmNlLCAqKkNhcGl0YWxpc20qKiBhbmQgKipDb21tdW5pc20qKiBhcmUgYm90aCBjb25jZXJuZWQgYWJvdXQgZWNvbm9taWMgc3lzdGVtcyBhbmQgY29uY2VudHJhdGUgb24g4oCcbGFib3Vy4oCdLCDigJxtb25leeKAnSwgYW5kIOKAnGNvbW1vZGl0aWVz4oCdIGFjY29yZGluZyB0byB0aGUgd29yZCBjbG91ZHMuIEJ1dCB0aGV5IGFyZSBhbHdheXMgaW4gdGhlIG9wcG9zaXRlIHBvc2l0aW9uIGluIG1vc3QgZGlzY3Vzc2lvbnMgdGhlc2UgZGF5cyBiZWNhdXNlIHRoZXkgdGhpbmsgdmVyeSBkaWZmZXJlbnRseS4gVGhlIHdvcmRzIOKAnGludGVyZXN04oCdLCDigJxtYXJrZXTigJ0sIOKAnHRyYWRl4oCdLCDigJxlcXVhbOKAnSwgZXRjLiBzdXBwb3J0IENhcGl0YWxpc23igJlzIG1haW4gaWRlYSBvZiAgaW5kaXZpZHVhbCBwcm9maXQgZWFybmluZywgcHJpdmF0ZSBvd25lcnNoaXAgYW5kIGZyZWUgbWFya2V0LiBIb3dldmVyLCBDb21tdW5pc20gYWR2b2NhdGVzIGdvdmVybm1lbnRhbCBjb250cm9sIG92ZXIgcmVzb3VyY2VzIGFuZCBwcm9kdWN0cywgc2hvd24gYnkgdGhlIGhpZ2ggZnJlcXVlbmN5IG9mIOKAnHBvd2Vy4oCdIGFuZCDigJxwb2xpdGljYWzigJ0gaW4gd29yZCBjbG91ZC4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzICJjYXBpdGFsaXN0IiBkb2VzIGFsc28gb2NjdXIgdmVyeSBmcmVxdWVudGx5LCB3aGljaCBtaWdodCBpbmRpY2F0ZSB0aGF0IHRoZXJlIGFyZSBzZW50ZW5jZXMgdG8gYXJndWUgYWdhaW5zdCBvciBtYWtlIGNvbXBhcmlzb24gdG8gQ2FwaXRhbGlzbSBpbiBkaXNjdXNzaW9uIG9mIENvbW11bmlzbSENCg0KYGBge3J9DQoNCg0KZC5jYXAgPC0gd29yZF9jbG91ZCgiY2FwaXRhbGlzbSIsIGRmKQ0KDQoNCnAuY2FwIDwtIHdvcmRjbG91ZChkLmNhcCR3b3JkLCBkLmNhcCRmcmVxLA0KICAgICAgICAgIHNjYWxlPWMoMywwLjMpLA0KICAgICAgICAgIG1heC53b3Jkcz0yMDAsDQogICAgICAgICAgbWluLmZyZXE9MSwNCiAgICAgICAgICByYW5kb20ub3JkZXI9RkFMU0UsDQogICAgICAgICAgcm90LnBlcj0wLjMsDQogICAgICAgICAgcmFuZG9tLmNvbG9yPUZBTFNFLA0KICAgICAgICAgIGNvbG9ycz1icmV3ZXIucGFsKDksIkJsdWVzIikpDQoNCmQuY29tIDwtIHdvcmRfY2xvdWQoImNvbW11bmlzbSIsIGRmKQ0KDQoNCnAuY29tIDwtIHdvcmRjbG91ZChkLmNvbSR3b3JkLCBkLmNvbSRmcmVxLA0KICAgICAgICAgIHNjYWxlPWMoMywwLjMpLA0KICAgICAgICAgIG1heC53b3Jkcz0yMDAsDQogICAgICAgICAgbWluLmZyZXE9MSwNCiAgICAgICAgICByYW5kb20ub3JkZXI9RkFMU0UsDQogICAgICAgICAgcm90LnBlcj0wLjMsDQogICAgICAgICAgcmFuZG9tLmNvbG9yPUZBTFNFLA0KICAgICAgICAgIGNvbG9ycz1icmV3ZXIucGFsKDksIkJsdWVzIikpDQoNCmBgYA0KDQpBbm90aGVyIGV4YW1wbGUgY291bGQgYmUgdGhlIHJlbGF0aW9uIGRlc2NyaWJlZCBieSB0ZXh0IGRhdGEgYmV0d2VlbiBzY2hvb2xzIG9mICoqQXJpc3RvdGxlKiogYW5kICoqUGxhdG8qKi4gQXJpc3RvdGxlIHdhcyB0aGUgc3R1ZGVudCBvZiBQbGF0byBpbiB0aGUgQWNhZGVteS4gQWx0aG91Z2ggQXJpc3RvdGxl4oCZcyBwaGlsb3NvcGh5IGlzIHJlbGF0aXZlbHkgbW9yZSBwcmFjdGljYWwgdGhhbiBQbGF0b+KAmXMsIHRoZXkgY291bGQgYmUgdHJhY2VkIGJhY2sgdG8gYSBzaW1pbGFyIHNvdXJjZS4gVGhleSBib3RoIGJlbGlldmVkIHRoYXQgYSDigJxqdXN04oCdIHBlcnNvbiB3aXRoIOKAnHZpcnR1ZeKAnSBhbmQgdGhlIOKAnGp1c3TigJ0g4oCcYWN0aW9uc+KAnSBhcmUgZ29vZC4gIA0KDQooV29yZHMgcXVvdGVkIGFib3ZlIGFyZSBzaG93biBpbiB0aGUgd29yZCBjbG91ZCBvZiBQbGF0byBhbmQgQXJpc3RvdGxlLikNCg0KYGBge3J9DQoNCmQucGxhdG8gPC0gd29yZF9jbG91ZCgicGxhdG8iLCBkZikNCg0KDQpwLnBsYXRvIDwtIHdvcmRjbG91ZChkLnBsYXRvJHdvcmQsIGQucGxhdG8kZnJlcSwNCiAgICAgICAgICBzY2FsZT1jKDMsMC4zKSwNCiAgICAgICAgICBtYXgud29yZHM9MjAwLA0KICAgICAgICAgIG1pbi5mcmVxPTEsDQogICAgICAgICAgcmFuZG9tLm9yZGVyPUZBTFNFLA0KICAgICAgICAgIHJvdC5wZXI9MC4zLA0KICAgICAgICAgIHJhbmRvbS5jb2xvcj1GQUxTRSwNCiAgICAgICAgICBjb2xvcnM9YnJld2VyLnBhbCg5LCJCbHVlcyIpKQ0KDQpkLmFzIDwtIHdvcmRfY2xvdWQoImFyaXN0b3RsZSIsIGRmKQ0KDQoNCnAuYXMgPC0gd29yZGNsb3VkKGQuYXMkd29yZCwgZC5hcyRmcmVxLA0KICAgICAgICAgIHNjYWxlPWMoMywwLjMpLA0KICAgICAgICAgIG1heC53b3Jkcz0yMDAsDQogICAgICAgICAgbWluLmZyZXE9MSwNCiAgICAgICAgICByYW5kb20ub3JkZXI9RkFMU0UsDQogICAgICAgICAgcm90LnBlcj0wLjMsDQogICAgICAgICAgcmFuZG9tLmNvbG9yPUZBTFNFLA0KICAgICAgICAgIGNvbG9ycz1icmV3ZXIucGFsKDksIkJsdWVzIikpDQoNCg0KYGBgDQoNCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCg0KDQpkLmFuYWx5dGljIDwtIHdvcmRfY2xvdWQoImFuYWx5dGljIiwgZGYpDQoNCg0KcC5hbmFseXRpYyA8LSB3b3JkY2xvdWQoZC5hbmFseXRpYyR3b3JkLCBkLmFuYWx5dGljJGZyZXEsDQogICAgICAgICAgc2NhbGU9YygzLDAuMyksDQogICAgICAgICAgbWF4LndvcmRzPTIwMCwNCiAgICAgICAgICBtaW4uZnJlcT0xLA0KICAgICAgICAgIHJhbmRvbS5vcmRlcj1GQUxTRSwNCiAgICAgICAgICByb3QucGVyPTAuMywNCiAgICAgICAgICByYW5kb20uY29sb3I9RkFMU0UsDQogICAgICAgICAgY29sb3JzPWJyZXdlci5wYWwoOSwiQmx1ZXMiKSkNCg0KZC5jb250IDwtIHdvcmRfY2xvdWQoImNvbnRpbmVudGFsIiwgZGYpDQoNCg0KcC5jb250IDwtIHdvcmRjbG91ZChkLmNvbnQkd29yZCwgZC5jb250JGZyZXEsDQogICAgICAgICAgc2NhbGU9YygzLDAuMyksDQogICAgICAgICAgbWF4LndvcmRzPTIwMCwNCiAgICAgICAgICBtaW4uZnJlcT0xLA0KICAgICAgICAgIHJhbmRvbS5vcmRlcj1GQUxTRSwNCiAgICAgICAgICByb3QucGVyPTAuMywNCiAgICAgICAgICByYW5kb20uY29sb3I9RkFMU0UsDQogICAgICAgICAgY29sb3JzPWJyZXdlci5wYWwoOSwiQmx1ZXMiKSkNCmBgYA0KDQoNCiMjIEVtb3Rpb25hbCBEaWZmZXJlbmNlIGJldHdlZW4gU2Nob29scw0KDQpCeSBvYnNlcnZpbmcgdGhlIGludGVyYWN0aXZlIGJhcnBsb3QgYnkgc2Nob29scyBiZWxvdywgeW91IHdpbGwgdW5kZXJzdGFuZCB0aGUgYXR0aXR1ZGVzIG9mIHNjaG9vbHMgYW5kIGhvdyB0aGV5IGVtb3Rpb25hbGx5IGV4cHJlc3MgdGhlbXNlbHZlcy4gQWxtb3N0IGFsbCBzY2hvb2xzIHJlY2VpdmUgYSBoaWdoIHNlbnRpbWVudCBzY29yZSBpbiB0cnVzdC4gRmVtaW5pc20gc2hvd3MgbW9yZSBhbnRpY2lwYXRpb24gYW5kIGxlc3MgZGlzZ3VzdCBpbiB0aGVpciBzZW50ZW5jZXMuIFBsYXRvIHdpbnMgaW4gam95LCB3aGljaCBjb3JyZXNwb25kcyB0byDigJx2aXJ0dWXigJ0sIOKAnGdvb2TigJ0gYW5kIOKAnGxvdmXigJ0gaW4gdGhlIHdvcmQgY2xvdWQuIFRoZSBhbmdlciBhbmQgc2FkbmVzcyBpbiBDb21tdW5pc20gY291bGQgYWxzbyBwb3NzaWJseSBiZSBhIHNpZ24gb2YgaGlzdG9yaWNhbCByZXZvbHV0aW9uIGhhcHBlbmluZyBhbmQgY2xhc3Mgc3RydWdnbGluZyByZWxhdGVkIHRvIGl0ISANCg0KYGBge3J9DQoNCiMgc2FtcGxpbmcgMTAwMCBzZW5ldGVuY2VzIGZvciBlYWNoIHNjaG9vbCANCmdldF9zZW50IDwtIGZ1bmN0aW9uKHNjaG9vbCwgZGYpew0KICBkZi5zZW50IDwtIGRmICU+JSBmaWx0ZXIoc2Nob29sID09IHNjaG9vbCkgJT4lIA0KICBzZWxlY3Qoc2VudGVuY2VfbG93ZXJlZCkNCg0KICBzZW50LnNjaG9vbCA8LSBzYW1wbGVfbihkZi5zZW50LCAxMDAwKQ0KICBzZW50LnNjaG9vbDEgPC0gZ2V0X25yY19zZW50aW1lbnQoc2VudC5zY2hvb2wkc2VudGVuY2VfbG93ZXJlZCwgY2wgPSBOVUxMLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlID0gImVuZ2xpc2giLCBsb3dlcmNhc2UgPSBUUlVFKQ0KDQp9DQoNCmBgYA0KDQoNCmBgYHtyfQ0Kc2Nob29sLmxpc3QgPC0gdW5pcXVlKGRmJHNjaG9vbCkNCmZ1bGwuc2VudCA8LSBkYXRhLmZyYW1lKG1hdHJpeChuY29sID0gMCwgbnJvdyA9IDgpKQ0KbmFtZXMgPC0gYygpDQogIA0KZm9yIChpIGluIDE6bGVuZ3RoKHNjaG9vbC5saXN0KSkgew0KICBkZi5uZXcgPC0gZ2V0X3NlbnQoc2Nob29sLmxpc3RbaV0sIGRmKQ0KICB0IDwtIGFzLmRhdGEuZnJhbWUoY29sU3Vtcyhwcm9wLnRhYmxlKGRmLm5ld1ssIDE6OF0pKSkNCiAgDQogIGZ1bGwuc2VudCA8LSBjYmluZChmdWxsLnNlbnQsIHQpDQogICMgbmFtZXMgPC0gYXBwZW5kKG5hbWVzLCBzY2hvb2wubGlzdFtpXSkNCiAgIyBjb2xuYW1lcyh0KSA8LSBuYW1lcyANCiAgcHJpbnQoc2Nob29sLmxpc3RbaV0pDQogIA0KfQ0KDQpjb2xuYW1lcyhmdWxsLnNlbnQpIDwtIHNjaG9vbC5saXN0DQpmdWxsLnNlbnQgPC0gYXMuZGF0YS5mcmFtZShmdWxsLnNlbnQpDQoNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCmZzLnVwZGF0ZSA8LSByb3duYW1lc190b19jb2x1bW4oZnVsbC5zZW50LCAiZW1vdGlvbiIpDQpmcy51cGRhdGUgPC0gZnMudXBkYXRlICU+JSBwaXZvdF9sb25nZXIoc2Nob29sLmxpc3QsIG5hbWVzX3RvID0gInNjaG9vbCIsIHZhbHVlc190byA9ICJwcm9iIikNCiMgaGVhZChmcy51cGRhdGUpDQoNCiMga2FibGUoZnVsbC5zZW50LCBjYXB0aW9uID0gIkVtb3Rpb25zIGFtb25nIFNjaG9vbHMiKSANCg0KDQpmcy51cGRhdGUgJT4lIHBsb3RfbHkoeCA9IH5lbW90aW9uLCB5ID0gfnByb2IsIGNvbG9yID0gfnNjaG9vbCwgd2lkdGggPSAxMDAwKQ0KDQoNCmZzLm1vc3QgPC0gZnMudXBkYXRlICU+JSBncm91cF9ieShlbW90aW9uKSAlPiUNCiAgdG9wX24oMSwgcHJvYikNCg0Ka2FibGUoZnMubW9zdCwgY2FwdGlvbiA9ICJFbW90aW9ucyBXaW5uZXIgYW1vbmcgU2Nob29scyIpIA0KDQpgYGANCg0KIyMjIERpc2N1c3Npb24gDQpJbiB0aGlzICpQaGlsb3NvcGh5IGZvciBFdmVyeW9uZSosIHF1ZXN0aW9ucyBhbmQgZmVhdHVyZXMgYW5kIHVuZGVyc3RhbmRpbmcgYmFzZWQgb24gdGV4dCBkYXRhIG1pbmluZyBvZiBjb3JwdXMgb2YgbWFqb3Igc2Nob29scyBvZiBwaGlsb3NvcGh5IHdlcmUgZGlzY3Vzc2VkIGluY2x1ZGluZyBzZW50ZW5jZSBsZW5ndGhzLCB3b3JkIGZyZXF1ZW5jeSwgYW5kIHNlbnRpbWVudCBhbmFseXNpcy4gRG9uJ3QgZm9yZ2V0IHRvIGFsd2F5cyBjaGVjayBtb3JlIGFib3V0IGhpc3Rvcnkgb2YgcGhpbG9zb3BoeSBhZnRlciByZWFkIHRoaXMgaW5zaWdodHMtZ2Fpbm5pZyBzdG9yeSEgDQoNCmBgYHtyfQ0KDQojIEVuZCBsaW5lIA0KDQpgYGA=